package com.jhx.common.http;

import android.text.TextUtils;

import com.jhx.common.cache.SimpleCache;
import com.jhx.common.utils.Constants;

/**
 * 用于产生服务器IP
 *
 * @author scott
 */
public class IPServFactory {

    private static final String IP = "ip";
    private static final String IP_NEW = "ip_new";
    private static IPServFactory instance;
    private String ip;
    private String newIp;

    public static IPServFactory sharedInstance() {
        if (null == instance) {
            instance = new IPServFactory();
        }
        return instance;
    }

    /**
     * @return 外部生产环境地址
     */
    public String getProductEnv() {
        return Constants.ENV_PRODUCT;
    }

    /**
     * @return 外部新接口生产环境地址
     */
    public String getNewProductEnv() {
        return Constants.ENV_NEW_PRODUCT;
    }

    /**
     * @return 外部测试环境地址
     */
    public String getTestEnv() {
        return Constants.ENV_TEST;
    }

    /**
     * @return 外部新接口测试环境地址
     */
    public String getNewTestEnv() {
        return Constants.ENV_NEW_TEST;
    }

    /**
     * @return 本地环境地址
     */
    public String getLocalEnv() {
        return Constants.ENV_LOCAL;
    }

    /**
     * @return 新接口本地环境地址
     */
    public String getNewLocalEnv() {
        return Constants.ENV_NEW_LOCAL;
    }

    public String getScheme() {
        return "http://";
    }

    public String getSchemeOfHttps() {
        return "https://";
    }

    /**
     * @return 获取线上环境完整域名
     */
    public String getServerName() {
        if (Constants.DEBUG) {
            ip = SimpleCache.Companion.get(IP);
            if (TextUtils.isEmpty(ip)) {
                return getScheme() + getNewLocalEnv();
            } else {
                return ip;
            }
        }
        return getSchemeOfHttps() + getProductEnv();
    }

    /**
     * @return 获取新接口线上环境完整域名
     */
    public String getNewServerName() {
        if (Constants.DEBUG) {
            return getScheme() + getNewTestEnv();
        }
        return getSchemeOfHttps() + getNewProductEnv();
    }

    public void setIp(String ipString) {
        SimpleCache.Companion.put(IP, ipString);
    }

    public void setNewIp(String ipString) {
        SimpleCache.Companion.put(IP_NEW, ipString);
    }
}
